package org.hfy.dto.warehouse;

import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import javax.validation.constraints.PositiveOrZero;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 基于外发单的入库创建DTO
 * 
 * @author hfy
 * @version 1.0
 */
@Data
public class OutsourcingInboundCreateDTO {

    /**
     * 外发单ID
     */
    @NotNull(message = "外发单ID不能为空")
    private Long outsourcingId;

    /**
     * 外发单号
     */
    private String outsourcingNo;

    /**
     * 报价单号
     */
    private String quotationNo;

    /**
     * 供应商代码
     */
    @NotNull(message = "供应商代码不能为空")
    private String supplierCode;

    /**
     * 供应商名称
     */
    @NotNull(message = "供应商名称不能为空")
    private String supplierName;

    /**
     * 产品名称
     */
    @NotNull(message = "产品名称不能为空")
    private String productName;

    /**
     * 物料编码
     */
    private String materialCode;

    /**
     * 外发数量
     */
    @NotNull(message = "外发数量不能为空")
    @Positive(message = "外发数量必须大于0")
    private Integer outsourcingQuantity;

    /**
     * 入库数量
     */
    @NotNull(message = "入库数量不能为空")
    @Positive(message = "入库数量必须大于0")
    private Integer inboundQuantity;

    /**
     * 备品数量
     */
    @PositiveOrZero(message = "备品数量不能为负数")
    private Integer spareQuantity;

    /**
     * 总入库数量（入库数量+备品数量）
     */
    private Integer totalInboundQuantity;

    /**
     * 外发单价
     */
    private BigDecimal unitPrice;

    /**
     * 外发总金额
     */
    private BigDecimal totalAmount;

    /**
     * 入库日期
     */
    @NotNull(message = "入库日期不能为空")
    private LocalDate inboundDate;

    /**
     * 厂内编号
     */
    @NotNull(message = "厂内编号不能为空")
    private String factoryNo;

    /**
     * 备注
     */
    private String remark;
} 